<!DOCTYPE html>
<html lang="en">


<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

  <title>ION - an open, public, permissionless decentralized identifier network</title>

  <!-- <meta name="google-site-verification" content="8yJCkbG9ayv7Vbjgjk525YTGbDVCvUZ_Moviopr6f1M" /> -->
  <link rel="icon" href="/ion/images/favicon.ico" />
  <link rel="icon" type="image/png" href="/ion/images/favicon.png?r1">
  <link rel="preconnect" href="https://fonts.gstatic.com">
  <link href="https://fonts.googleapis.com/css2?family=Nunito+Sans&display=swap" rel="stylesheet">

  <link href="/ion/css/compiled/head.css" rel="stylesheet">

    <link href="/ion/css/imports/hero.css" rel="stylesheet" />

    <link href="/ion/css/imports/page.css" rel="stylesheet" />

    <link href="/ion/css/imports/markdown.css" rel="stylesheet" />

    <link href="/ion/css/guide.css" rel="stylesheet" />


  <script src="/ion/js/compiled/web-components.js" type="module"></script>

</head>

  <body>

    <svg style="display: none">

<!-- <svg class="preloader-icon" width="34" height="38" viewBox="0 0 34 38">
  <path class="preloader-path" stroke-dashoffset="0" d="M29.437 8.114L19.35 2.132c-1.473-.86-3.207-.86-4.68 0L4.153 8.114C2.68 8.974 1.5 10.56 1.5 12.28v11.964c0 1.718 1.22 3.306 2.69 4.165l10.404 5.98c1.47.86 3.362.86 4.834 0l9.97-5.98c1.472-.86 2.102-2.45 2.102-4.168V12.28c0-1.72-.59-3.306-2.063-4.166z"></path>

  SVG
    width: 64px;
    height: 76px;

  PATH
    stroke-linejoin: round;
    fill: none;
    stroke: #f04955;
    stroke-dasharray: 70 32;
    animation: preloader 1s infinite linear;

  KEYFRAME preloader
    0% {
      stroke-dashoffset: 0;
    }
    100% {
        stroke-dashoffset: 6em;
    }

</svg> -->

<symbol id="menu-icon" viewBox="0 0 512 512">
  <path d="m256 512c-68.378906 0-132.667969-26.628906-181.019531-74.980469-48.351563-48.351562-74.980469-112.640625-74.980469-181.019531s26.628906-132.667969 74.980469-181.019531c48.351562-48.351563 112.640625-74.980469 181.019531-74.980469s132.667969 26.628906 181.019531 74.980469c48.351563 48.351562 74.980469 112.640625 74.980469 181.019531s-26.628906 132.667969-74.980469 181.019531c-48.351562 48.351563-112.640625 74.980469-181.019531 74.980469zm0-472c-119.101562 0-216 96.898438-216 216s96.898438 216 216 216 216-96.898438 216-216-96.898438-216-216-216zm110 195.980469h-220v40h220zm0-79.980469h-220v40h220zm0 160h-220v40h220zm0 0"/>
</symbol>

<symbol id="line-chart-icon" viewBox="0 0 512 512">
  <path d="m497 452h-437v-437c0-8.289062-6.710938-15-15-15h-30c-8.289062 0-15 6.710938-15 15s6.710938 15 15 15h15v61h-15c-8.289062 0-15 6.710938-15 15s6.710938 15 15 15h15v60h-15c-8.289062 0-15 6.710938-15 15s6.710938 15 15 15h15v60h-15c-8.289062 0-15 6.710938-15 15s6.710938 15 15 15h15v60h-15c-8.289062 0-15 6.710938-15 15s6.710938 15 15 15h15v61h-15c-8.289062 0-15 6.710938-15 15s6.710938 15 15 15h15v15c0 8.289062 6.710938 15 15 15s15-6.710938 15-15v-15h61v15c0 8.289062 6.710938 15 15 15s15-6.710938 15-15v-15h60v15c0 8.289062 6.710938 15 15 15s15-6.710938 15-15v-15h60v15c0 8.289062 6.710938 15 15 15s15-6.710938 15-15v-15h61v15c0 8.289062 6.710938 15 15 15s15-6.710938 15-15v-15h60v15c0 8.289062 6.710938 15 15 15s15-6.710938 15-15v-30c0-8.289062-6.710938-15-15-15zm0 0"/><path d="m467 61c-24.8125 0-45 20.1875-45 45 0 13.046875 5.671875 24.710938 14.570312 32.9375l-56.722656 132.351562c-.960937-.0625-1.871094-.289062-2.847656-.289062-6.925781 0-14.410156 1.703125-20.277344 4.511719l-60.234375-60.234375c2.808594-5.867188 4.511719-12.351563 4.511719-19.277344 0-24.8125-20.1875-45-45-45s-45 20.1875-45 45c0 8.695312 2.589844 16.746094 6.875 23.632812l-67.222656 84.023438c-4.617188-1.601562-9.496094-2.65625-14.652344-2.65625-24.8125 0-46 20.1875-46 45s21.1875 45 46 45 45-20.1875 45-45c0-8.695312-2.589844-16.746094-6.875-23.632812l67.222656-84.023438c4.617188 1.601562 9.496094 2.65625 14.652344 2.65625 6.925781 0 13.410156-1.703125 19.277344-4.511719l60.234375 60.234375c-2.808594 5.867188-4.511719 12.351563-4.511719 19.277344 0 24.8125 21.1875 45 46 45s45-20.1875 45-45c0-13.046875-5.671875-24.710938-14.570312-32.9375l56.722656-132.351562c.957031.0625 1.871094.289062 2.847656.289062 24.8125 0 45-20.1875 45-45 0-24.816406-20.1875-45-45-45zm0 0"/>
</symbol>

<symbol id="github-icon" viewBox="0 0 24 24">
  <path fill="inherit" d="m12 .5c-6.63 0-12 5.28-12 11.792 0 5.211 3.438 9.63 8.205 11.188.6.111.82-.254.82-.567 0-.28-.01-1.022-.015-2.005-3.338.711-4.042-1.582-4.042-1.582-.546-1.361-1.335-1.725-1.335-1.725-1.087-.731.084-.716.084-.716 1.205.082 1.838 1.215 1.838 1.215 1.07 1.803 2.809 1.282 3.495.981.108-.763.417-1.282.76-1.577-2.665-.295-5.466-1.309-5.466-5.827 0-1.287.465-2.339 1.235-3.164-.135-.298-.54-1.497.105-3.121 0 0 1.005-.316 3.3 1.209.96-.262 1.98-.392 3-.398 1.02.006 2.04.136 3 .398 2.28-1.525 3.285-1.209 3.285-1.209.645 1.624.24 2.823.12 3.121.765.825 1.23 1.877 1.23 3.164 0 4.53-2.805 5.527-5.475 5.817.42.354.81 1.077.81 2.182 0 1.578-.015 2.846-.015 3.229 0 .309.21.678.825.56 4.801-1.548 8.236-5.97 8.236-11.173 0-6.512-5.373-11.792-12-11.792z"/>
</symbol>

<symbol id="network-icon" viewBox="0 0 47 47">
  <path d="M17.567,15.938l-2.859-2.702c0.333-0.605,0.539-1.29,0.539-2.029c0-2.342-1.897-4.239-4.24-4.239
    c-2.343,0-4.243,1.896-4.243,4.239c0,2.343,1.9,4.241,4.243,4.241c0.826,0,1.59-0.246,2.242-0.654l2.855,2.699
    C16.536,16.922,17.023,16.399,17.567,15.938z"/>
  <path d="M29.66,15.6l3.799-6.393c0.374,0.107,0.762,0.184,1.169,0.184c2.347,0,4.244-1.898,4.244-4.241
    c0-2.342-1.897-4.239-4.244-4.239c-2.343,0-4.239,1.896-4.239,4.239c0,1.163,0.469,2.214,1.227,2.981l-3.787,6.375
    C28.48,14.801,29.094,15.169,29.66,15.6z"/>
  <path d="M42.762,20.952c-1.824,0-3.369,1.159-3.968,2.775l-5.278-0.521c0,0.04,0.006,0.078,0.006,0.117
    c0,0.688-0.076,1.36-0.213,2.009l5.276,0.521c0.319,2.024,2.062,3.576,4.177,3.576c2.342,0,4.238-1.896,4.238-4.238
    C47,22.85,45.104,20.952,42.762,20.952z"/>
  <path d="M28.197,37.624l-1.18-5.156c-0.666,0.232-1.359,0.398-2.082,0.481l1.182,5.157c-1.355,0.709-2.29,2.11-2.29,3.746
    c0,2.342,1.896,4.237,4.243,4.237c2.342,0,4.238-1.896,4.238-4.237C32.311,39.553,30.479,37.692,28.197,37.624z"/>
  <path d="M14.357,25.37l-6.57,2.201c-0.758-1.158-2.063-1.926-3.548-1.926C1.896,25.645,0,27.542,0,29.884
    c0,2.345,1.896,4.242,4.239,4.242c2.341,0,4.242-1.897,4.242-4.242c0-0.098-0.021-0.188-0.029-0.284l6.591-2.207
    C14.746,26.752,14.51,26.077,14.357,25.37z"/>
  <circle cx="23.83" cy="23.323" r="7.271"/>
</symbol>

<symbol id="network-2-icon" viewBox="0 0 512 512">
  <path d="m482 308.854v-105.708c17.124-3.685 30-18.937 30-37.146 0-30.082-33.375-48.043-58.413-32.026l-75.561-75.561c16.022-25.047-1.953-58.413-32.026-58.413-37.055 0-52.257 48.031-21.563 69.266l-33.854 82.003-57.626-57.626 59.855-24.875c4.08-1.696 6.013-6.378 4.317-10.458s-6.377-6.013-10.458-4.317l-65.955 27.41-22.806-22.808c16.188-24.994-1.699-58.595-31.91-58.595-30.082 0-48.043 33.375-32.026 58.413l-75.56 75.561c-25.048-16.022-58.414 1.953-58.414 32.026 0 23.682 21.515 41.649 44.866 37.367l21.873 52.633-21.874 52.633c-23.311-4.274-44.865 13.649-44.865 37.367 0 30.082 33.375 48.043 58.413 32.026l75.561 75.56c-16.023 25.047 1.953 58.414 32.026 58.414 18.209 0 33.46-12.876 37.145-30h105.709c3.685 17.124 18.937 30 37.145 30 20.953 0 38-17.047 38-38s-17.047-38-38-38c-18.209 0-33.46 12.876-37.145 30h-102.756l236.689-98.364c21.384 30.757 69.213 15.123 69.213-21.636 0-18.209-12.876-33.46-30-37.146zm-45.382-136.076-22.143 9.142-45.816-110.246 73.549 73.548c-5.178 7.896-7.386 17.638-5.59 27.556zm6.117 14.785c5.409 7.818 13.668 13.517 23.265 15.583v102.758l-45.385-109.208zm8.394 124.252-90.398-90.398 45.094-18.616zm44.871-145.815c0 12.131-9.869 22-22 22s-22-9.869-22-22 9.869-22 22-22 22 9.869 22 22zm-150-150c12.131 0 22 9.869 22 22s-9.869 22-22 22-22-9.869-22-22 9.869-22 22-22zm-6.778 59.382c4.541.822 9.032.83 13.644-.016l46.819 112.659-51.205 21.14-45.645-45.646zm-6.759 140.396-61.723 25.482 25.482-61.723zm-173.328-140.411c9.685 1.775 19.413-.246 27.46-5.457l18.136 18.136-61.484 25.552zm-36.833 46.935-50.627 21.04 71.667-71.668zm43.698-106.302c12.131 0 22 9.869 22 22s-9.869 22-22 22-22-9.869-22-22 9.869-22 22-22zm-150 150c0-12.131 9.869-22 22-22s22 9.869 22 22-9.869 22-22 22-22-9.869-22-22zm43.636 31.213c12.166-8.459 18.461-23.191 15.731-38.079l38.231-15.888-38.195 91.907zm15.767 79.634 15.983 38.458-22.12 9.132c-2.605-3.765-5.871-7.037-9.63-9.65zm-.021 62.374 22.143-9.141 45.817 110.246-73.55-73.548c5.167-7.88 7.389-17.618 5.59-27.557zm-59.382 6.779c0-12.131 9.869-22 22-22s22 9.869 22 22-9.869 22-22 22-22-9.869-22-22zm150 150c-12.131 0-22-9.869-22-22s9.869-22 22-22 22 9.869 22 22-9.869 22-22 22zm180-44c12.131 0 22 9.869 22 22s-9.869 22-22 22-22-9.869-22-22 9.869-22 22-22zm-148.786.365c-8.443-12.144-23.161-18.465-38.079-15.732l-46.82-112.659 31.177-12.871c4.084-1.686 6.028-6.363 4.342-10.447-1.686-4.085-6.364-6.027-10.447-4.342l-31.211 12.885-22.11-53.199 50.476-121.458 82.429-34.256 66.999 66.999-34.097 82.589-54.391 22.455c-4.084 1.686-6.028 6.363-4.342 10.447 1.694 4.105 6.383 6.02 10.447 4.342l39.671-16.378-57.072 138.241c-2.179 5.276 1.724 11.055 7.392 11.055 3.143 0 6.124-1.864 7.397-4.949l63.149-152.961 82.589-34.097 97.375 97.375c-5.205 8.037-7.235 17.765-5.457 27.461zm276.786-84.365c-12.131 0-22-9.869-22-22s9.869-22 22-22 22 9.869 22 22-9.869 22-22 22z"/><path d="m166.459 284.312c-4.378 1.793-6.087 6.538-4.474 10.478 1.678 4.095 6.353 6.043 10.436 4.371 4.378-1.793 6.087-6.538 4.474-10.478-1.675-4.087-6.347-6.045-10.436-4.371z"/>
</symbol>

<symbol id="guide-icon" viewBox="60 28.582365891119757 394 481.41763410888024">
  <defs xmlns="http://www.w3.org/2000/svg"><path d="M451 90L451 29.58C244 29.58 129 29.58 106 29.58C81.19 29.58 61 43.13 61 59.79C61 76.45 81.19 90 106 90C152 90 267 90 451 90Z" id="c6qhijkQCo"/><path d="M172.56 375.49L199.55 359.92C204.38 364.04 207.06 366.32 207.6 366.78C214.63 372.77 222.51 377.34 231.01 380.36C231.68 380.59 235.01 381.77 241 383.9L241 415L271 415L271 383.9C276.99 381.77 280.32 380.59 280.99 380.36C289.49 377.34 297.37 372.77 304.4 366.78C304.94 366.32 307.62 364.04 312.46 359.92L339.44 375.49L354.44 349.51L327.72 334.07C328.84 327.84 329.47 324.37 329.59 323.68C330.41 319.23 331 314.69 331 310C331 305.31 330.41 300.77 329.59 296.32C329.47 295.63 328.84 292.16 327.72 285.93L354.44 270.49L339.44 244.51L312.46 260.08C307.62 255.96 304.94 253.68 304.4 253.22C297.37 247.23 289.49 242.66 280.99 239.64C280.32 239.41 276.99 238.23 271 236.1L271 205L241 205L241 236.1C235.01 238.23 231.68 239.41 231.01 239.64C222.51 242.66 214.63 247.23 207.6 253.22C207.06 253.68 204.38 255.96 199.55 260.08L172.56 244.51L157.56 270.49L184.28 285.93C183.16 292.16 182.53 295.63 182.41 296.32C181.59 300.77 181 305.31 181 310C181 314.69 181.59 319.23 182.41 323.68C182.53 324.37 183.16 327.84 184.28 334.07L157.56 349.51L172.56 375.49ZM301 310C301 334.81 280.81 355 256 355C231.19 355 211 334.81 211 310C211 285.19 231.19 265 256 265C280.81 265 301 285.19 301 310Z" id="b4qaCBLwXD"/><mask id="maskkoaKpB4Ys" x="157.56" y="205" width="196.88" height="210" maskUnits="userSpaceOnUse"><rect x="157.56" y="205" width="196.88" height="210" fill="white"/><use xmlns:xlink="http://www.w3.org/1999/xlink" href="#b4qaCBLwXD" opacity="1" fill="black"/></mask><path d="M61 462C61 486.81 81.19 507 106 507C129 507 244 507 451 507L451 115C244 115 129 115 106 115C89.05 115 73.57 109.14 61 99.62C61 172.1 61 389.52 61 462ZM151.41 301.58C149.09 300.24 137.49 293.54 116.6 281.48L161.6 203.52C182.66 215.69 194.36 222.46 196.7 223.81C201.27 220.66 206.05 217.89 211 215.52C211 212.82 211 199.31 211 175L301 175C301 199.31 301 212.82 301 215.52C305.95 217.89 310.73 220.66 315.3 223.81C317.64 222.46 329.34 215.69 350.4 203.52L395.4 281.48C374.51 293.54 362.91 300.24 360.59 301.58C360.85 304.35 361 307.16 361 310C361 312.84 360.85 315.66 360.59 318.42C362.91 319.76 374.51 326.46 395.4 338.52L350.4 416.48C329.34 404.31 317.64 397.55 315.3 396.19C310.73 399.34 305.95 402.11 301 404.48C301 407.19 301 420.69 301 445L211 445C211 420.69 211 407.18 211 404.48C206.05 402.11 201.27 399.34 196.7 396.19C194.36 397.54 182.66 404.31 161.61 416.48L116.61 338.52C137.49 326.46 149.09 319.76 151.41 318.42C151.15 315.65 151 312.84 151 310C151 307.16 151.15 304.35 151.41 301.58Z" id="alOQ7spHT"/></defs>
  <g xmlns="http://www.w3.org/2000/svg"><g><use xmlns:xlink="http://www.w3.org/1999/xlink" href="#c6qhijkQCo" opacity="1" fill="inherit" fill-opacity="1"/><g><use xmlns:xlink="http://www.w3.org/1999/xlink" href="#c6qhijkQCo" opacity="1" fill-opacity="0" stroke="inherit" stroke-width="1" stroke-opacity="0"/></g></g><g><use xmlns:xlink="http://www.w3.org/1999/xlink" href="#b4qaCBLwXD" opacity="1" fill="inherit" fill-opacity="1"/><g mask="url(#maskkoaKpB4Ys)"><use xmlns:xlink="http://www.w3.org/1999/xlink" href="#b4qaCBLwXD" opacity="1" fill-opacity="0" stroke="inherit" stroke-width="0" stroke-opacity="1"/></g></g><g><use xmlns:xlink="http://www.w3.org/1999/xlink" href="#alOQ7spHT" opacity="1" fill="inherit" fill-opacity="1"/><g><use xmlns:xlink="http://www.w3.org/1999/xlink" href="#alOQ7spHT" opacity="1" fill-opacity="0" stroke="inherit" stroke-width="1" stroke-opacity="0"/></g></g></g>
</symbol>

<symbol id="gauge-icon" viewBox="0 -38 512.00096 512">
  <path d="m81.953125 92.097656c2.558594 0 5.117187-.976562 7.070313-2.929687.007812-.003907.035156-.03125.058593-.054688 3.902344-3.851562 3.976563-10.136719.148438-14.082031-3.847657-3.960938-10.179688-4.058594-14.144531-.210938-.042969.042969-.171876.167969-.214844.214844-3.894532 3.90625-3.894532 10.230469.007812 14.132813 1.957032 1.957031 4.515625 2.929687 7.074219 2.929687zm0 0"/><path d="m509.84375 222.769531c-7.332031-55.710937-33.160156-108.179687-72.722656-147.742187-48.382813-48.382813-112.703125-75.027344-181.121094-75.027344-53.46875 0-104.660156 16.277344-148.042969 47.070312-4.503906 3.199219-5.5625 9.441407-2.367187 13.945313 3.195312 4.503906 9.4375 5.5625 13.945312 2.367187 3.226563-2.289062 6.5-4.484374 9.816406-6.597656l24.875 43.085938c-10.71875 7.011718-20.796874 15.171875-30.0625 24.4375-9.179687 9.179687-17.339843 19.289062-24.378906 30.09375l-43.085937-24.871094c4.492187-7.085938 9.363281-13.941406 14.613281-20.53125 3.4375-4.320312 2.726562-10.613281-1.59375-14.054688-4.324219-3.441406-10.613281-2.726562-14.054688 1.589844-28.910156 36.300782-47.414062 79.949219-53.507812 126.230469-7.308594 55.503906 4.097656 112.792969 32.101562 161.296875 5.949219 10.355469 15.574219 17.769531 27.101563 20.882812 3.878906 1.050782 7.816406 1.566407 11.730469 1.566407 7.714844 0 15.332031-2.015625 22.199218-5.960938 10.355469-5.953125 17.769532-15.574219 20.882813-27.101562 3.113281-11.53125 1.554687-23.578125-4.40625-33.949219-18.5-32.046875-25.726563-68.402344-20.890625-105.136719 4.808594-36.523437 21.210938-69.6875 47.433594-95.910156 31.4375-31.4375 73.234375-48.746094 117.691406-48.746094 44.460938 0 86.261719 17.308594 117.695312 48.746094 26.222657 26.21875 42.621094 59.386719 47.433594 95.910156 2.3125 17.574219 1.859375 35.0625-1.265625 52.039063l-103.328125-39.085938c-1.882812-12.992187-7.867187-25.019531-17.261718-34.414062-23.851563-23.851563-62.660157-23.851563-86.511719 0-23.851563 23.851562-23.851563 62.664062 0 86.515625 11.925781 11.925781 27.589843 17.886719 43.253906 17.886719 15.667969 0 31.332031-5.960938 43.257813-17.890626 1.6875-1.683593 3.269531-3.46875 4.746093-5.332031l109 17.808594c-3.382812 9.484375-7.652343 18.71875-12.792969 27.625-12.277343 21.375-4.882812 48.753906 16.488282 61.03125 10.351562 5.953125 22.402344 7.511719 33.929687 4.398437 11.527344-3.113281 21.152344-10.53125 27.089844-20.863281 28.011719-48.519531 39.417969-105.8125 32.109375-161.3125zm-415.410156 126.714844c3.285156 5.722656 4.148437 12.378906 2.429687 18.75-1.722656 6.367187-5.820312 11.6875-11.539062 14.972656-5.722657 3.289063-12.378907 4.152344-18.75 2.433594-6.367188-1.722656-11.6875-5.820313-14.984375-11.558594-19.304688-33.4375-29.929688-70.160156-31.457032-107.933593h49.617188c1.597656 29.199218 10.015625 57.933593 24.683594 83.335937zm-23.386719-117.730469c-.632813 4.785156-1.0625 9.585938-1.316406 14.390625h-49.558594c.304687-6.90625.902344-13.828125 1.816406-20.765625 3.632813-27.582031 12.046875-54.140625 24.730469-78.511718l43.054688 24.855468c-9.5625 18.769532-15.972657 39.105469-18.726563 60.03125zm155.855469 53.519532c-16.050782-16.050782-16.050782-42.171876 0-58.222657 16.054687-16.054687 42.171875-16.050781 58.226562 0 3.367188 3.367188 6.078125 7.238281 8.074219 11.445313l-28.527344-10.792969c-7.066406-2.671875-14.8125-2.171875-21.8125 1.417969-7.570312 3.878906-13.410156 11.109375-15.613281 19.335937-2.203125 8.222657-.761719 17.398438 3.855469 24.546875 4.269531 6.605469 10.722656 10.917969 18.179687 12.136719l30.089844 4.914063c-16.03125 11.058593-38.214844 9.472656-52.472656-4.78125zm74.1875-11.9375c-.027344-.003907-.054688-.007813-.082032-.015626l-48.496093-7.921874c-2.316407-.378907-3.78125-1.976563-4.605469-3.246094-1.578125-2.445313-2.089844-5.710938-1.335938-8.523438.753907-2.8125 2.828126-5.382812 5.417969-6.710937.894531-.457031 2.109375-.898438 3.46875-.898438.683594 0 1.40625.113281 2.140625.390625l45.832032 17.335938c.09375.039062.191406.074218.289062.109375l46.109375 17.441406zm-35.089844-203.363282v-49.746094c35.132812 1.453126 68.886719 10.558594 99.351562 26.511719l-24.882812 43.101563c-22.949219-11.683594-48.203125-18.488282-74.46875-19.867188zm-119.34375-23.222656c30.625-16.046875 64.359375-25.085938 99.34375-26.535156v49.757812c-26.265625 1.378906-51.519531 8.183594-74.46875 19.867188zm211.117188 53.121094 24.890624-43.109375c14.414063 9.195312 27.933594 20.027343 40.3125 32.40625 12.375 12.375 23.195313 25.886719 32.382813 40.328125l-43.140625 24.910156c-7.039062-10.808594-15.203125-20.917969-24.382812-30.097656-9.265626-9.265625-19.34375-17.425782-30.0625-24.4375zm64.453124 71.851562 43.140626-24.90625c12.628906 24.234375 20.976562 50.679688 24.648437 78.5625.910156 6.933594 1.507813 13.859375 1.816406 20.765625h-49.558593c-.253907-4.804687-.6875-9.605469-1.316407-14.390625-2.753906-20.925781-9.164062-41.261718-18.730469-60.03125zm38.171876 202.375c-3.285157 5.722656-8.605469 9.820313-14.972657 11.539063-6.367187 1.71875-13.027343.859375-18.746093-2.429688-11.808594-6.785156-15.898438-21.914062-9.121094-33.703125 6.300781-10.914062 11.445312-22.441406 15.394531-34.355468l12.1875 1.992187c.546875.089844 1.085937.132813 1.621094.132813 4.453125 0 8.464843-2.984376 9.652343-7.414063 1.332032-4.964844-1.316406-10.125-6.121093-11.945313l-11.578125-4.375c1.84375-9.027343 3.03125-18.183593 3.539062-27.390624h49.613282c-1.527344 37.777343-12.152344 74.5-31.46875 107.949218zm0 0"/><path d="m316.007812 354.496094h-120.015624c-5.523438 0-10 4.476562-10 10v32.003906c0 5.523438 4.476562 10 10 10h120.015624c5.523438 0 10.003907-4.476562 10.003907-10v-32.003906c0-5.523438-4.480469-10-10.003907-10zm-10 32.003906h-100.011718v-12.003906h100.011718zm0 0"/><path d="m108.175781 246.144531c-5.523437 0-10 4.476563-10 10 0 5.523438 4.476563 10 10 10h.238281c5.523438 0 10-4.476562 10-10 0-5.523437-4.476562-10-10-10zm0 0"/><path d="m190.882812 123.335938-.117187-.207032c-2.765625-4.78125-8.882813-6.421875-13.664063-3.65625-4.78125 2.761719-6.421874 8.878906-3.65625 13.664063l.117188.203125c1.851562 3.207031 5.214844 5 8.667969 5 1.699219 0 3.417969-.433594 4.992187-1.339844 4.785156-2.765625 6.421875-8.878906 3.660156-13.664062zm0 0"/><path d="m329.800781 138.359375c3.457031 0 6.816407-1.792969 8.667969-5l.117188-.207031c2.765624-4.78125 1.125-10.898438-3.65625-13.664063-4.78125-2.761719-10.898438-1.125-13.664063 3.660157l-.117187.207031c-2.761719 4.78125-1.125 10.898437 3.660156 13.660156 1.574218.910156 3.292968 1.34375 4.992187 1.34375zm0 0"/><path d="m403.824219 266.179688c5.523437 0 10-4.476563 10-10 0-5.523438-4.476563-10.003907-10-10.003907h-.234375c-5.523438 0-10.003906 4.480469-10.003906 10.003907 0 5.523437 4.480468 10 10.003906 10zm0 0"/><path d="m221.230469 416.503906h-.234375c-5.523438 0-10 4.476563-10 10 0 5.523438 4.476562 10 10 10h.234375c5.523437 0 10.003906-4.476562 10.003906-10 0-5.523437-4.480469-10-10.003906-10zm0 0"/><path d="m291.007812 416.503906h-41.042968c-5.519532 0-10 4.480469-10 10.003906 0 5.523438 4.480468 10 10 10h41.042968c5.519532 0 10-4.476562 10-10 0-5.523437-4.476562-10.003906-10-10.003906zm0 0"/>
</symbol>

<symbol id="shield-lock-icon" viewBox="-33 0 511 511.9985">
  <path xmlns="http://www.w3.org/2000/svg" d="m437.972656 79.160156-66.152344-24.507812c-5.179687-1.917969-10.929687.726562-12.851562 5.902344-1.917969 5.179687.726562 10.933593 5.90625 12.851562l59.625 22.089844v119.875c0 127.164062-81.046875 237.753906-202 276.152344-120.953125-38.398438-202-148.988282-202-276.152344v-119.875l202-74.832032 57.960938 21.472657c5.179687 1.921875 10.933593-.722657 12.851562-5.902344s-.722656-10.933594-5.902344-12.851563l-61.4375-22.761718c-2.238281-.828125-4.707031-.828125-6.945312 0l-212 78.539062c-3.925782 1.453125-6.527344 5.195313-6.527344 9.378906v126.832032c0 66.796875 20.996094 130.496094 60.71875 184.199218 39.722656 53.707032 94.480469 92.433594 158.351562 111.988282.957032.292968 1.941407.441406 2.929688.441406s1.972656-.148438 2.929688-.441406c63.871093-19.554688 118.628906-58.28125 158.351562-111.988282 39.722656-53.703124 60.71875-117.402343 60.71875-184.199218v-126.832032c0-4.183593-2.605469-7.925781-6.527344-9.378906zm0 0"/>
  <path xmlns="http://www.w3.org/2000/svg" d="m218.875 50.894531-164 63.785157c-3.84375 1.492187-6.375 5.195312-6.375 9.320312v91.371094c0 54.152344 16.179688 105.992187 46.789062 149.910156 30.503907 43.769531 73.292969 76.777344 123.738282 95.453125 1.121094.414063 2.296875.621094 3.472656.621094s2.351562-.207031 3.472656-.621094c50.445313-18.675781 93.234375-51.683594 123.738282-95.453125 30.609374-43.917969 46.789062-95.757812 46.789062-149.910156v-91.371094c0-4.125-2.53125-7.824219-6.375-9.320312l-164-63.78125c-2.332031-.910157-4.917969-.910157-7.25-.003907zm157.625 164.476563c0 101.003906-60.320312 189.03125-154 225.292968-93.683594-36.261718-154-124.289062-154-225.292968v-84.53125l154-59.894532 154 59.894532zm0 0"/>
  <path xmlns="http://www.w3.org/2000/svg" d="m164.5 169.863281v20.414063h-1.125c-17.023438 0-30.875 13.851562-30.875 30.875v97.761718c0 17.027344 13.851562 30.875 30.875 30.875h118.25c17.023438 0 30.875-13.847656 30.875-30.875v-97.761718c0-17.023438-13.851562-30.875-30.875-30.875h-1.125v-20.414063c0-31.980469-26.019531-58-58-58s-58 26.015625-58 58zm128 51.289063v97.761718c0 5.996094-4.878906 10.875-10.875 10.875h-118.25c-5.996094 0-10.875-4.878906-10.875-10.875v-97.761718c0-5.996094 4.878906-10.875 10.875-10.875h118.25c5.996094 0 10.875 4.878906 10.875 10.875zm-32-51.289063v20.414063h-76v-20.414063c0-20.953125 17.046875-38 38-38s38 17.046875 38 38zm0 0"/>
  <path xmlns="http://www.w3.org/2000/svg" d="m222.5 229.976562c-16.542969 0-30 13.460938-30 30 0 13.039063 8.359375 24.152344 20 28.28125v7.832032c0 5.523437 4.476562 10 10 10 5.519531 0 10-4.476563 10-10v-7.832032c11.636719-4.128906 20-15.242187 20-28.28125 0-16.539062-13.457031-30-30-30zm0 40c-5.515625 0-10-4.484374-10-10 0-5.511718 4.484375-10 10-10 5.511719 0 10 4.488282 10 10 0 5.515626-4.488281 10-10 10zm0 0"/>
  <path xmlns="http://www.w3.org/2000/svg" d="m326.136719 58.398438c2.632812 0 5.210937-1.070313 7.070312-2.929688 1.859375-1.871094 2.929688-4.4375 2.929688-7.070312 0-2.628907-1.070313-5.210938-2.929688-7.078126-1.859375-1.859374-4.4375-2.921874-7.070312-2.921874-2.628907 0-5.207031 1.0625-7.070313 2.921874-1.855468 1.867188-2.929687 4.4375-2.929687 7.078126 0 2.632812 1.070312 5.210937 2.929687 7.070312 1.863282 1.859375 4.441406 2.929688 7.070313 2.929688zm0 0"/>
</symbol>

<symbol id="sdk-icon" viewBox="0 0 512 512">
  <path d="M447.716,97.794L297.207,10.993c-25.416-14.658-56.997-14.657-82.414,0L64.285,97.794
    C38.819,112.479,23,139.866,23,169.266v173.467c0,29.4,15.819,56.787,41.284,71.472l150.509,86.801
    c25.421,14.661,57.001,14.656,82.414,0l150.508-86.801C473.181,399.52,489,372.133,489,342.733V169.266
    C489,139.867,473.181,112.48,447.716,97.794z M449,342.733c0,15.144-8.148,29.251-21.266,36.815l-150.509,86.801
    c-13.093,7.552-29.358,7.552-42.451,0L84.265,379.548C71.148,371.983,63,357.877,63,342.733V169.266
    c0-15.143,8.148-29.25,21.266-36.814l150.508-86.801c13.094-7.552,29.364-7.549,42.452,0l150.509,86.8
    C440.852,140.016,449,154.122,449,169.266V342.733z"/>
  <path d="M236.994,240.729l-74.281-62.863c-8.431-7.136-21.052-6.085-28.187,2.349c-7.135,8.434-6.083,21.055,2.349,28.191
    L193.113,256l-56.238,47.593c-8.432,7.136-9.483,19.757-2.349,28.191c7.152,8.452,19.776,9.467,28.187,2.348l74.281-62.863
    C246.444,263.272,246.417,248.704,236.994,240.729z"/>
  <path d="M362.206,298.859h-89.995c-11.046,0-20,8.955-20,20.003c0,11.048,8.954,20.003,20,20.003h89.995
    c11.045,0,20-8.955,20-20.003C382.206,307.814,373.252,298.859,362.206,298.859z"/>
</symbol>

<symbol id="magnifier-icon" viewBox="0 0 30.239 30.239">
  <path d="M20.194,3.46c-4.613-4.613-12.121-4.613-16.734,0c-4.612,4.614-4.612,12.121,0,16.735
  c4.108,4.107,10.506,4.547,15.116,1.34c0.097,0.459,0.319,0.897,0.676,1.254l6.718,6.718c0.979,0.977,2.561,0.977,3.535,0
  c0.978-0.978,0.978-2.56,0-3.535l-6.718-6.72c-0.355-0.354-0.794-0.577-1.253-0.674C24.743,13.967,24.303,7.57,20.194,3.46z
   M18.073,18.074c-3.444,3.444-9.049,3.444-12.492,0c-3.442-3.444-3.442-9.048,0-12.492c3.443-3.443,9.048-3.443,12.492,0
  C21.517,9.026,21.517,14.63,18.073,18.074z"/>
</symbol>

<symbol id="box-icon" viewBox="0 0 511.973 511.973">
  <path d="m255.989 0-221.693 127.993v255.985l221.693 127.994 221.688-127.994v-255.985zm176.683 136.651-176.683 101.965-176.688-101.965 176.688-102.01zm-368.376 25.977 176.693 101.969v204.074l-176.693-102.013zm206.693 306.043v-204.074l176.688-101.968v204.03z"/>
</symbol>

<symbol id="hexagons-icon" viewBox="0 0 512 512">
  <path d="m444.734 256.072 60.828-104.617c5.371-9.235 5.407-20.731.094-30.001l-60.981-106.374c-5.333-9.302-15.305-15.08-26.027-15.08h-118.344c-10.56 0-20.456 5.647-25.826 14.736-44.335 75.018-62.006 104.907-62.873 106.408h-118.501c-10.542 0-20.431 5.634-25.807 14.703l-60.717 102.427c-5.595 9.436-5.595 21.159-.001 30.596l60.811 102.585c5.341 9.01 14.782 14.504 25.254 14.696 106.927 1.973 122.062 2.254 122.339 2.256l59.342 108.036c5.271 9.596 15.347 15.557 26.295 15.557h117.957c10.809 0 20.821-5.849 26.131-15.264l61.045-108.24c5.257-9.321 5.132-20.829-.324-30.035zm-144.45-226.037c.113-.082 126.407-.027 118.363-.027.1 0 61.076 106.372 60.975 106.372.1 0 1.431-2.458-60.885 104.729-.1.095 3.954.036-118.331.036-.224 0 2.901 5.101-62.809-105.037zm-267.897 223.537c63.518-107.153 60.661-102.386 60.761-102.428 124.135 0 118.41-.037 118.511.042.115.192-3.068-5.14 62.694 105.083l-58.971 102.142c-1.032 0 13.078.241-122.185-2.254zm386.191 228.428h-117.958l-59.43-108.194c-.02-.166 59.134-102.526 59.194-102.629.1-.098-4.231-.032 118.365-.032.058.024 60.95 102.619 60.868 102.619.101 0 1.544-2.732-61.039 108.236z"/><path d="m127.391 186.977c-7.19-4.109-16.354-1.611-20.466 5.581l-32 56c-5.774 10.105 1.692 22.445 13.01 22.445 5.207 0 10.269-2.716 13.037-7.561l32-56c4.11-7.193 1.611-16.355-5.581-20.465z"/><path d="m327.949 95h64c8.284 0 15-6.716 15-15s-6.716-15-15-15h-64c-8.284 0-15 6.716-15 15s6.715 15 15 15z"/><path d="m391.949 417h-64c-8.284 0-15 6.716-15 15s6.716 15 15 15h64c8.284 0 15-6.716 15-15s-6.716-15-15-15z"/>
</symbol>


<symbol id="key-icon" viewBox="0 0 611.997 611.997">
	<path d="M554.068,57.971C516.679,20.588,466.974,0,414.108,0c-52.869,0-102.575,20.588-139.956,57.971
		c-37.39,37.385-57.98,87.092-57.98,139.963c0,27.181,5.481,53.51,15.849,77.773L13.939,493.789
		c-3.961,3.957-6.401,9.182-6.897,14.754l-6.903,77.47c-0.63,7.044,1.894,13.999,6.892,18.995
		c4.998,4.998,11.951,7.522,18.995,6.894l77.474-6.901c5.572-0.498,10.793-2.937,14.754-6.901l23.491-23.493
		c-0.16-0.652-0.275-1.32-0.323-2.011l-3.851-56.142c-0.227-3.327,0.994-6.591,3.353-8.949c2.357-2.357,5.598-3.561,8.946-3.353
		L206.017,508c0.691,0.045,1.362,0.162,2.013,0.325l18.438-18.438c-0.162-0.652-0.277-1.323-0.325-2.015l-3.851-56.142
		c-0.227-3.327,0.996-6.591,3.353-8.949c2.357-2.359,5.615-3.574,8.949-3.353l56.146,3.851c0.688,0.045,1.362,0.162,2.013,0.325
		l43.594-43.596c24.263,10.369,50.594,15.847,77.771,15.847c52.871,0,102.575-20.588,139.961-57.969
		C631.246,260.723,631.246,135.151,554.068,57.971z M471.741,255.569c-15.393,15.391-35.859,23.867-57.631,23.867
		c-21.77,0-42.236-8.477-57.629-23.872c-15.395-15.393-23.874-35.861-23.874-57.631c0-21.772,8.479-42.238,23.874-57.631
		c15.388-15.393,35.857-23.869,57.627-23.869c21.772,0,42.238,8.477,57.631,23.869C503.518,172.082,503.518,223.793,471.741,255.569
		z"/>
</symbol>

<symbol id="tag-icon" viewBox="0 0 295 295">
  <path d="M290.156,23.89c-0.482-10.311-8.733-18.562-19.044-19.044L168.005,0.023c-5.62-0.272-11.097,1.855-15.077,5.836
	L5.858,152.93C2.108,156.681,0,161.767,0,167.072s2.107,10.392,5.858,14.143l107.929,107.928c3.904,3.905,9.023,5.857,14.142,5.857
	c5.118,0,10.237-1.953,14.143-5.857l147.069-147.069c3.98-3.98,6.1-9.454,5.837-15.077L290.156,23.89z M252.481,76.087
	c-9.269,9.269-24.298,9.269-33.567,0s-9.269-24.298,0-33.567s24.298-9.269,33.567,0S261.751,66.817,252.481,76.087z"/>
</symbol>

<symbol id="endpoints-icon" viewBox="-0.9999999999999756 -0.9999999999999878 291.5862068965515 306.27502963362053">
<defs><path d="M223.15 22.98C210.75 12.33 194.93 6.47 178.61 6.47C166.36 6.47 154.63 9.63 144.27 15.66C133.31 5.63 118.93 0 103.82 0C71.41 0 44.93 25.83 43.87 57.99C32.67 61.12 22.52 67.49 14.77 76.38C5.25 87.3 0 101.29 0 115.77C0 148.84 26.91 175.75 59.98 175.75C76.74 175.75 210.84 175.75 227.6 175.75C260.68 175.75 287.59 148.84 287.59 115.77C287.59 89.25 270 65.95 245.03 58.37C241.61 44.68 233.97 32.28 223.15 22.98Z" id="agYm6WZCD"></path><path d="M90.43 223.64C72.54 223.64 62.6 223.64 60.61 223.64C56.93 210.69 45.01 201.17 30.89 201.17C13.86 201.17 0 215.03 0 232.06C0 249.1 13.86 262.96 30.89 262.96C45.01 262.96 56.93 253.44 60.61 240.49C64.43 240.49 95.03 240.49 98.86 240.49C103.51 240.49 107.28 236.72 107.28 232.06C107.28 230.43 107.28 211.66 107.28 175.75L90.43 175.75L90.43 223.64Z" id="ajbjOYiHM"></path><path d="M152.22 175.75L135.37 175.75C135.37 217.42 135.37 239.4 135.37 241.67C122.42 245.34 112.9 257.27 112.9 271.38C112.9 288.42 126.76 302.28 143.79 302.28C160.83 302.28 174.69 288.42 174.69 271.38C174.69 257.27 165.17 245.34 152.22 241.67C152.22 237.12 152.22 215.15 152.22 175.75Z" id="c3Slxl5lCg"></path><path d="M226.98 223.64C224.99 223.64 215.05 223.64 197.15 223.64L197.15 175.75L180.3 175.75C180.3 211.66 180.3 230.43 180.3 232.06C180.3 236.72 184.08 240.49 188.73 240.49C192.55 240.49 223.15 240.49 226.98 240.49C230.65 253.44 242.58 262.96 256.69 262.96C273.73 262.96 287.59 249.1 287.59 232.06C287.59 215.03 273.73 201.17 256.69 201.17C242.58 201.17 230.66 210.69 226.98 223.64Z" id="a3xeyOTnST"></path></defs><g><g><use href="#agYm6WZCD" opacity="1" fill="inherit" fill-opacity="1"></use></g><g><use href="#ajbjOYiHM" opacity="1" fill="inherit" fill-opacity="1"></use><g><use href="#ajbjOYiHM" opacity="1" fill-opacity="0" stroke="inherit" stroke-width="1" stroke-opacity="0"></use></g></g><g><use href="#c3Slxl5lCg" opacity="1" fill="inherit" fill-opacity="1"></use><g><use href="#c3Slxl5lCg" opacity="1" fill-opacity="0" stroke="inherit" stroke-width="1" stroke-opacity="0"></use></g></g><g><use href="#a3xeyOTnST" opacity="1" fill="inherit" fill-opacity="1"></use><g><use href="#a3xeyOTnST" opacity="1" fill-opacity="0" stroke="inherit" stroke-width="1" stroke-opacity="0"></use>
</symbol>


<symbol id="docker-icon" viewBox="0 0 640 512">
  <path d="M349.9 236.3h-66.1v-59.4h66.1v59.4zm0-204.3h-66.1v60.7h66.1V32zm78.2 144.8H362v59.4h66.1v-59.4zm-156.3-72.1h-66.1v60.1h66.1v-60.1zm78.1 0h-66.1v60.1h66.1v-60.1zm276.8 100c-14.4-9.7-47.6-13.2-73.1-8.4-3.3-24-16.7-44.9-41.1-63.7l-14-9.3-9.3 14c-18.4 27.8-23.4 73.6-3.7 103.8-8.7 4.7-25.8 11.1-48.4 10.7H2.4c-8.7 50.8 5.8 116.8 44 162.1 37.1 43.9 92.7 66.2 165.4 66.2 157.4 0 273.9-72.5 328.4-204.2 21.4.4 67.6.1 91.3-45.2 1.5-2.5 6.6-13.2 8.5-17.1l-13.3-8.9zm-511.1-27.9h-66v59.4h66.1v-59.4zm78.1 0h-66.1v59.4h66.1v-59.4zm78.1 0h-66.1v59.4h66.1v-59.4zm-78.1-72.1h-66.1v60.1h66.1v-60.1z"/>
</symbol>

    </svg>


<header id="header">
  <nav id="nav">
    <a id="logo" href="/ion">
      <img class="logo" src="/ion/images/logo-white.svg" />
    </a>
    <svg id="nav_toggle_icon"><use href="#menu-icon"></use></svg>
    <input id="nav_toggle" type="checkbox" onblur="this.checked = false;"/>
    <ul>
      <li>
        <a href="/ion/install-guide">
          <svg><use href="#guide-icon"></use></svg>
          Install Guide
        </a>
      </li>
      <li>
        <a href="/ion/explorer">
          <svg><use href="#network-icon"></use></svg>
          Network Explorer
        </a>
        <ul>
          <li>
            <a href="/ion/explorer/?view=search">
              <svg><use href="#magnifier-icon"></use></svg>
              DID Search
            </a>
            <a class="prerelease" href="/ion/explorer/?view=timeline">
              <svg><use href="#line-chart-icon"></use></svg>
              Timeline
            </a>
          </li>
        </ul>
      </li>
      <li>
        <a href="https://github.com/decentralized-identity/ion">
          <svg><use href="#github-icon"></use></svg>
          GitHub
        </a>
      </li>
    </ul>
  </nav>
</header>


    <aside id="sidebar"></aside>

    <main>


<section id="hero" full-width>
  <div id="hero_content">
    <object data="/ion/images/logo-white.svg"></object>
    <h2>Install Guide for v1.0.3</h2>
  </div>
</section>

<section id="content" class="markdown">
  <h1>ION Installation Guide</h1>
<p>ION is a decentralized Layer 2 network for Decentralized Identifiers that runs atop the Bitcoin blockchain. Running an ION node minimizes trust in external parties for resolving ION DIDs, helps make the network more resilient and reliable, and provides the operator with better DID resolution performance.</p>
<p>The ION node reference implementation is currently in beta phase, operators should expect potential breaking changes and resets of the network's state. Presently, we are only recommending that experienced developers invest the time in running, testing, and contributing to the code base. This recommendation will change as the implementation progresses into more stable stages of development, which contributors will communicate to the community via blog posts and communications from DIF and collaborating organizations.</p>
<p>The ION node implementation is composed of a collection of microservices. Of these components, the major dependencies are Bitcoin Core, IPFS, and MongoDB (for local persistence of data).</p>
<h2>1. Preparing your development environment</h2>
<h3>Hardware</h3>
<p>We recommend you run ION on a machine with the following minimum specs:</p>
<ul>
<li>i5 processor (2017+ models)</li>
<li>6GB of RAM</li>
<li>1TB of storage</li>
</ul>
<h3>Operating System</h3>
<p>Both Linux and Windows are supported and tested. For Linux, the setup is verified on Ubuntu 18, so we recommend Debian-based distros for Linux setup.</p>
<h4>Linux Environment Setup</h4>
<h5>Snap</h5>
<p>We use snap to simplify installation of certain services. Run the following command to install snap:</p>
<pre><code>sudo apt install snapd
</code></pre>
<p>You may need to add the snap binaries directory to your path by adding the following line in ~/.bash_profile</p>
<pre><code>PATH=&quot;$PATH:/snap/bin&quot;
</code></pre>
<p>To ensure that the path changes go into effect immediately:</p>
<pre><code>source ~/.bash_profile
</code></pre>
<h5>Node.js</h5>
<p>Services within ION rely on Node.js version 14. Run the following command to install Node v14:</p>
<pre><code>sudo snap install node --classic --channel=14
</code></pre>
<h5>build-essential</h5>
<p>Building ION requires your distro's equivalent of Ubuntu's 'build-essential', e.g. make, g++, etc.</p>
<pre><code>sudo apt install build-essential
</code></pre>
<h4>Windows Environment Setup</h4>
<p>Go go <a href="https://nodejs.org">https://nodejs.org</a>, download and install the latest v14 of Node.js.</p>
<h3>Inbound Ports to Open</h3>
<p>If you wish to run a node that writes ION DID operations, you will need to enable uPnP on your router or open ports <code>4002</code> and <code>4003</code> so that the operation data files can be served to others via IPFS.</p>
<h3>Testnet or Mainnet</h3>
<blockquote>
<p>NOTE: This guide describes steps to setup an ION node targeting bitcoin testnet, but can be used to target the bitcoin mainnet by substituting testnet configs for mainnet.</p>
</blockquote>
<p>Bitcoin and ION need to be configured to use either <code>testnet</code> (for development) or <code>mainnet</code> (for production). If you change one service from <code>testnet</code> to <code>mainnet</code> or vice versa, the other services will also need to be rebuilt to match. Default config values for <code>testnet</code> are not valid for <code>mainnet</code> and services will fail to start if they are mismatched.</p>
<h2>2. Setting up Bitcoin Core</h2>
<p>An ION node needs a trusted Bitcoin peer for fetching and writing ION transactions. We use Bitcoin Core for this.</p>
<h3>Automated script for installing Bitcoin Core on Linux</h3>
<p>If you would like to install and start Bitcoin Core automatically on Linux, you can review and run the automated script committed in the <a href="https://github.com/decentralized-identity/sidetree/blob/master/lib/bitcoin/setup.sh">Sidetree repo</a>.</p>
<blockquote>
<p>NOTE: Initial synchronization takes ~2 hours for testnet on a 2 core machine with an SSD.</p>
</blockquote>
<h3>Installing Bitcoin Core Manually</h3>
<p>You can find Windows and Linux binaries for Bitcoin Core releases <a href="https://bitcoincore.org/en/releases/">here.</a></p>
<h4>On Linux:</h4>
<p>Create a configuration file (<code>bitcoin.conf</code>) designating</p>
<ol>
<li>the path you would like the Bitcoin data to be stored in (the <code>[datadir]</code>)</li>
<li>a username (e.g. <code>admin</code>)</li>
<li>a password (must match <code>ion-bitcoin</code>'s configuration later)</li>
</ol>
<p>&lt;table&gt;
&lt;tr&gt;
&lt;th&gt;Testnet&lt;/th&gt;
&lt;th&gt;Mainnet&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;</p>
<pre><code class="language-yaml">testnet=1
server=1
datadir=~/.bitcoin
rpcuser=&lt;your-rpc-username&gt;
rpcpassword=&lt;your-rpc-password&gt;
txindex=1
</code></pre>
<p>&lt;/td&gt;
&lt;td&gt;</p>
<pre><code class="language-yaml">server=1
txindex=1
datadir=~/.bitcoin
rpcuser=&lt;your-rpc-username&gt;
rpcpassword=&lt;your-rpc-password&gt;
</code></pre>
<p>&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;</p>
<p>Start Bitcoin Core and let it sync:</p>
<pre><code>./bin/bitcoind --config bitcoin.conf
</code></pre>
<blockquote>
<p>NOTE: You can add <code>--daemon</code> to run bitcoind as a daemon process.</p>
</blockquote>
<h4>On Windows:</h4>
<p>Running Bitcoin Core with friendly UI after install:</p>
<pre><code>bitcoin-qt.exe -testnet -datadir=&lt;path-to-store-data&gt; -server -rpcuser=&lt;your-rpc-username&gt; -rpcpassword=&lt;your-rpc-password&gt; -txindex=1
</code></pre>
<h2>3. Installing Go-IPFS</h2>
<p>Follow the instruction found at <a href="https://docs.ipfs.io/install/">IPFS website</a> to install Go-IPFS, you can install the IPFS Desktop which internally installs Go-IPFS, it provides you with a user friendly UI.</p>
<h2>4. Setting up MongoDB</h2>
<h3>On Linux:</h3>
<p>The default persistence option for storing data locally is MongoDB, though it is possible to create adapters for other datastores. To use the default MongoDB option, you'll need to install MongoDB community build:</p>
<ul>
<li>Download as a <code>deb</code> package: <a href="https://www.mongodb.com/download-center/community">https://www.mongodb.com/download-center/community</a>.</li>
<li>Installation doc: <a href="https://docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu/">https://docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu/</a></li>
</ul>
<blockquote>
<p>NOTE: You may not have all the dependencies required to run MongoDB, if so you can run <code>sudo apt-get install -f</code> to bring them in.</p>
</blockquote>
<p>You'll probably want to store the data from the Mongo instance in the same drive you chose to store the blockchain data, due to the large amount of storage required. Set the directory for this by creating a <code>db</code> folder in the location you chose and run <code>mongod --dbpath ~/YOUR_LOCATION/db</code></p>
<h3>On Windows:</h3>
<p>Download and install MongoDB from <a href="https://www.mongodb.com/download-center/community">https://www.mongodb.com/download-center/community</a>.</p>
<blockquote>
<p>NOTE: To view MongoDB files with a more approachable GUI, download and install MongoDB Compass: <a href="https://docs.mongodb.com/compass/master/install/">https://docs.mongodb.com/compass/master/install/</a></p>
</blockquote>
<h2>5. Configure &amp; Build ION Microservices</h2>
<p>Clone <a href="https://github.com/decentralized-identity/ion:">https://github.com/decentralized-identity/ion:</a></p>
<pre><code>git clone https://github.com/decentralized-identity/ion
</code></pre>
<p>Example configuration files for both <code>testnet-</code> and <code>mainnet-</code> can be found under <a href="https://github.com/decentralized-identity/ion/tree/master/config">the top-level <code>config/</code> directory</a>.</p>
<blockquote>
<p>NOTE: If not specified, <strong><code>json/testnet-*-*.json</code> files are used as default configuration values</strong>. Be sure to start with whichever config template (<code>testnet-</code> or <code>mainnet-</code>) is right for your use case.</p>
</blockquote>
<h3>Create your configuration files from templates</h3>
<p>Copy the configuration files <code>&lt;testnet-or-mainnet&gt;-bitcoin-config.json</code> and <code>&lt;testnet-or-mainnet&gt;-bitcoin-versioning.json</code> to another directory, (e.g. <code>/etc/ion/</code>)</p>
<h3>Update configuration files</h3>
<p>Update the ION Bitcoin microservice (e.g. <code>/etc/ion/testnet-bitcoin-config.json</code>):</p>
<ul>
<li><code>bitcoinPeerUri</code>
<ul>
<li>Ensure it points to the RPC endpoint of the Bitcoin Core client you setup earlier in this guide</li>
<li>testnet: <code>http://localhost:18332</code></li>
<li>mainnet: <code>http://localhost:8332</code> (assuming default Bitcoin Core configuration from Step 2)</li>
</ul>
</li>
<li><code>bitcoinDataDirectory</code>
<ul>
<li>This is an <em><strong>optional</strong></em> config value. By configuring this value, instead of using rpc call to initialize Bitcoin microservice, the node will read from the block binary files. This is useful in speeding up init time if you have fast access to the files (local SSD is optimal). If the files are stored and retireved across network, such as on the cloud in AWS S3 Bucket or Azure Blob Storage, then this will be slower than using RPC as it has to download GB worth of files.</li>
<li>Leave it blank if you do not wish to init from file. If you want to init from files, it needs to point to the block files folder:</li>
<li>testnet: <code>[datadir]/testnet3</code>.</li>
<li>mainnet: exactly the same as the <code>[datadir]</code> value configured for Bitcoin Core in Step 2.</li>
</ul>
</li>
<li><code>bitcoinWalletImportString</code>
<ul>
<li>if you intend to write DID operations, populate it with your private key, else use any <a href="https://learnmeabitcoin.com/technical/wif">generated import string</a> <strong>without any bitcoin</strong></li>
<li>testnet: (a valid <code>testnet</code> example wallet will be generated each time <code>ion-bitcoin</code> fails to load a valid WIF string on startup as part of its error message. You can use one of those values for testing as well</li>
<li>mainnet: (must be a mainnet-compatible WIF)</li>
</ul>
</li>
<li><code>bitcoinRpcUsername</code> &amp; <code>bitcoinRpcPassword</code>
<ul>
<li>must match what was set in <code>bitcoin.conf</code> from step 2.</li>
</ul>
</li>
</ul>
<p>Update the configuration for the ION core service under <code>json/testnet-core-config.json</code>:</p>
<ul>
<li><code>didMethodName</code>
<ul>
<li>testnet: <code>ion:test</code></li>
<li>mainnet: <code>ion</code></li>
</ul>
</li>
</ul>
<p>Run the following commands to build ION:</p>
<pre><code>npm i
npm run build
</code></pre>
<blockquote>
<p>NOTE: You may nee to run <code>npm install tsc</code> before running <code>npm run build</code> to install TypeScript in Linux/Mac environments.</p>
</blockquote>
<blockquote>
<p>NOTE: You <strong>must rerun <code>npm run build</code></strong> every time a configuration JSON file is modified.</p>
</blockquote>
<h2>6. Run ION Bitcoin microservice</h2>
<p><em>Update the paths below</em> to where you edited and saved the config files from the previous step.</p>
<pre><code>ION_BITCOIN_CONFIG_FILE_PATH=/etc/ion/testnet-bitcoin-config.json
ION_BITCOIN_VERSIONING_CONFIG_FILE_PATH=/etc/ion/testnet-bitcoin-versioning.json
npm run bitcoin
</code></pre>
<blockquote>
<p>NOTE: This service will fail to start until your Bitcoin Core client has blocks past the ION genesis block. Please wait and try again later if this happens.</p>
</blockquote>
<h2>7. Run ION core service</h2>
<h3>(Optional) Create your configuration files from templates</h3>
<blockquote>
<p>NOTE: This is not required when using <code>testnet</code> because the defaults are sufficient</p>
</blockquote>
<p>Copy the configuration files <code>&lt;testnet or mainnet&gt;-core-config.json</code> and <code>&lt;testnet or mainnet&gt;-core-versioning.json</code> to another directory, (e.g. <code>/etc/ion/</code> or <code>~</code>)</p>
<p>Start a new console and run the following command to start the core service.</p>
<pre><code>ION_CORE_CONFIG_FILE_PATH=/usr/local/src/ion/config/testnet-core-config.json
ION_CORE_VERSIONING_CONFIG_FILE_PATH=/usr/local/src/ion/config/testnet-core-versioning.json
npm run core
</code></pre>
<blockquote>
<p>NOTE: This service will fail to start until your ION Bitcoin service has started successfully.</p>
</blockquote>
<p>Give it some time to synchronize ION transactions.</p>
<h2>8. Verify ION is working properly</h2>
<p>Check the following DID resolution in your browser:</p>
<ul>
<li>testnet:
<a href="http://localhost:3000/identifiers/did:ion:test:EiClWZ1MnE8PHjH6y4e4nCKgtKnI1DK1foZiP61I86b6pw">http://localhost:3000/identifiers/did:ion:test:EiClWZ1MnE8PHjH6y4e4nCKgtKnI1DK1foZiP61I86b6pw</a></li>
<li>mainnet:
<a href="http://localhost:3000/identifiers/did:ion:EiClkZMDxPKqC9c-umQfTkR8vvZ9JPhl_xLDI9Nfk38w5w">http://localhost:3000/identifiers/did:ion:EiClkZMDxPKqC9c-umQfTkR8vvZ9JPhl_xLDI9Nfk38w5w</a></li>
</ul>

</section>


    </main>


      <footer id="footer">

  <div>
    <h4>Structure &amp; Licensing</h4>
    <div>
      <p>
        DIF is a registered 501(c)(6) nonprofit organization. All code is licensed under Apache 2, W3C terms govern IPR, and content is available via Creative Commons 4 Attribution.
      </p>
    </div>
  </div>

  <div>
    <h4>Resources</h4>
    <div>
      <ul>
        <li><a href="https://github.com/decentralized-identity/ion">GitHub</a></li>
        <li><a href="https://github.com/decentralized-identity/ion/blob/master/install-guide.md">Install Guide</a></li>
        <li><a href="https://identity.foundation/working-groups/sidetree.html">Community</a></li>
      </ul>
    </div>
  </div>

  <div>
    <h4>Icons &amp; Design</h4>
    <div>
      <ul>
        <li>
          Some icons were made by <a href="https://www.flaticon.com/authors/freepik">Freepik</a>,
          <a href="https://www.flaticon.com/authors/becris">Becris</a>,
          <a href="https://www.flaticon.com/authors/eucalyp">Eucalyp</a>,
          <a href="https://www.flaticon.com/authors/linector">Linector</a>,
          <a href="https://www.flaticon.com/authors/pixel-perfect">Pixel Perfect</a>,
          and <a href="https://www.flaticon.com/authors/vitaly-gorbachev">Vitaly Gorbachev</a>
          from <a href="https://www.flaticon.com/" title="Flaticon">Flaticon.com</a>.
        </li>
      </ul>
    </div>
  </div>

  <div>
    <hr/>
    <p>Copyright © 2021, DIF. All Rights Reserved.</p>
  </div>

</footer>






      <script src="/ion/js/compiled/body.js"></script>




      <script src="/ion/js/imports/hero.js" ></script>

      <script src="/ion/js/guide.js" type=module></script>


  </body>

</html>
